<?php
class XmediaController extends Zend_Controller_Action
{
	private $_uiVar = array();
	private $_album;
	private $_photo;
	private $_video;
	
	public function init()
	{
		$this->_uiVar["html"]["title"] = STE_Html::WEBSITE_TITLE;
		
		try
		{
			$db = Zend_Registry::get("DB");
			$this->_album = new STE_Album($db);
			$this->_photo = new STE_Photo($db);
			$this->_video = new STE_Video($db);
		} catch (Exception $ex) {
			echo $ex->getMessage();
		}
	}
	
	function indexAction()
	{
		$this->_redirect("/xmedia/list");
	}
	
	function listAction()
	{
		if ($this->_userLoggedIn())
		{
			$smarty = Zend_Registry::get("SMARTY");
			$smarty->assign("uiVar", $this->_uiVar);
			$smarty->assign('swapLayout', true);
			$smarty->display("x/media/index.tpl");
		} else {
			$this->_redirect('/xmember/login');
		}
	}
	
	function listMediaAction()
	{
		if(!$this->_userLoggedIn()) {
			echo json_encode(array("code" => -100, "data" => "Bạn cần phải đăng nhập để thực hiện chức năng này.")); 
			return;
		}
		
		try
		{
			$albumID = $this->_getParam("albumID");
			$from = $this->_getParam("from");
			$numberOfMedia = $this->_getParam("numberOfMedia");
			
			$album = $this->_album->getAlbum($albumID);
			$albumType = $album['album_type'];
			if($albumType == 'photo') {
				$media = $this->_photo->getPhotoList($albumID, $from, $numberOfMedia);
			} else {
				$media = $this->_video->getVideoList($albumID, $from, $numberOfMedia);
			}
			
			echo json_encode(array("code" => 0, "data" => $media));
		} catch (Exception $ex)	{
			echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
		}
	}
	
	function addAction()
	{
		if(!$this->_userLoggedIn()) {
			echo json_encode(array("code" => -100, "data" => "Bạn cần phải đăng nhập để thực hiện chức năng này.")); 
			return;
		}

		try
		{
			$formData = $_POST;				
			$errorMessage = $this->_checkNewMediaData($formData);
			$mediaType = $formData['mediaType'];
			$fileName = ($mediaType== 'photo' ? $formData['newPhotoFilename'] : $formData['newVideoFilename']);
			if (empty($errorMessage))
			{
				if($mediaType == 'photo') {
					$r = $this->_photo->insertPhoto($formData['albumID'], 
													$fileName,													
													$formData['newMediaDescription']);
				} else {
					$r = $this->_video->insertVideo($formData['albumID'], 
													$fileName,													
													$formData['newMediaDescription']);
				}
				
				if ($r) {
					echo json_encode(array("code" => 0, "data" => "Thành công."));
				} else {					
					echo json_encode(array("code" => -98, "data" => "Không thành công."));
				}
			}
			else
				echo json_encode(array("code" => -99, "data" => $errorMessage));
		} catch (Exception $ex) {
			echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
		}
	}
	
	function editAction()
	{
		if(!$this->_userLoggedIn()) {
			echo json_encode(array("code" => -100, "data" => "Bạn cần phải đăng nhập để thực hiện chức năng này.")); 
			return;
		}	

		try
		{
			$formData = $_POST;
			$errorMessage = '';
			$mediaType = $formData['mediaType'];
			if (!empty($errorMessage)) {				
				echo json_encode(array("code" => -99, "data" => $errorMessage)); return;
			}
			
			if($mediaType == 'photo') {
				$r = $this->_photo->updatePhoto($formData['editMediaID'], 										
												$formData['editMediaDescription']);
			} else {
				$r = $this->_video->updateVideo($formData['editMediaID'], 										
												$formData['editMediaDescription']);			
			}
			
			if($r) {
				echo json_encode(array("code" => 0, "data" => "Cập nhật thành công."));	
			} else {
				echo json_encode(array("code" => 0, "data" => "Cập nhật không thành công."));
			}
		} catch (Exception $ex) {
			echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
		}
	}
	
	function removeAction()
	{
		if(!$this->_userLoggedIn()) {
			echo json_encode(array("code" => -100, "data" => "Bạn cần phải đăng nhập để thực hiện chức năng này.")); 
			return;
		}

		try
		{
			$formData = $_POST;
			$errorMessage = $this->_checkRemoveMediaData($formData);
			$mediaType = $formData['mediaType'];
			if (empty($errorMessage))
			{				
				if($mediaType == 'photo') {
					$r = $this->_photo->deletePhoto($formData['removeMediaID']);
				} else {
					$r = $this->_video->deleteVideo($formData['removeMediaID']);
				}			
				
				if($r) {	
					echo json_encode(array("code" => 0, "data" => 'Xóa thành công.'));					
				} else {
					echo json_encode(array("code" => -2, "data" => 'Xóa không thành công.'));
				}
			}
			else
				echo json_encode(array("code" => -99, "data" => $errorMessage));
		}
		catch (Exception $ex)
		{
			echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
		}		
	}
	
	function getInfoAction()
	{
		if(!$this->_userLoggedIn()) {
			echo json_encode(array("code" => -100, "data" => "Bạn cần phải đăng nhập để thực hiện chức năng này.")); 
			return;
		}
		
		try
		{
			$mediaID = $this->_getParam('id');
			$mediaType = $this->_getParam('mediaType');
			if($mediaType == 'photo') {
				$media = $this->_photo->getPhoto($mediaID);
			} else {
				$media = $this->_video->getVideo($mediaID);
			}
			
			echo json_encode(array("code" => 0, "data" => $media));
		} catch (Exception $ex)	{
			echo json_encode(array("code" => -101, "data" => $ex->getMessage()));
		}
	}
	
	private function _checkNewMediaData($formData)
	{
		if($formData['mediaType'] == 'photo' && empty($formData["newPhotoFilename"]) || 
		   $formData['mediaType'] == 'video' && empty($formData["newVideoFilename"]))			
			return 'Làm ơn chọn file.';
		return '';
	}
	
	private function _checkRemoveMediaData($formData)
	{		
		if (empty($formData["removeMediaID"]))
			return 'removeMediaID trống.';
		return '';
	}
	
	private function _userLoggedIn()
	{
		$adminSession = new Zend_Session_Namespace("STE_ADMIN");
		return ((isset($adminSession->member["IS_LOGIN"])) && ($adminSession->member["IS_LOGIN"] == 1)) ? 1 : 0;
	}
}
?>